home *** CD-ROM | disk | FTP | other *** search
/ Greenhouse Effect Detection Expriment / NASA Greenhouse Effect Detection Expriment 1992 - Disc 2.iso / software / dos / cdf22pc / src / tools / var_form.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-02-26  |  3.3 KB  |  158 lines

  1. /******************************************************************************
  2. *
  3. *  NSSDC/CDF                    Variable data formatting.
  4. *
  5. *  Version 2.0, 27-Feb-92, ST Systems (STX)
  6. *
  7. *  Modification history:
  8. *
  9. *   V1.0  24-Jan-91, D Grogan/H Leckner       Original version (for CDF V2.0).
  10. *   V1.1  25-Mar-91, J Love           Cast malloc calls.
  11. *   V1.2  27-Feb-92, J Love           Modified for IBM-PC port.  CDF V2.2.
  12. *             H Leckner
  13. *
  14. ******************************************************************************/
  15.  
  16. #include <stdlib.h>
  17.  
  18.   /* 
  19.    *     VAR_FORM.C
  20.    */
  21. #define VAR_FORM 1
  22. #include "wfl.h"
  23. #include "cdfdist.h"
  24. #include "cdfbrow.h"
  25.   /*
  26.    *    VAR_FORM_DEF.INC
  27.    */
  28.  
  29.  
  30. #define VAR_DATATYPE_ELEMENT    4
  31. #define DEC_DATATYPE_ELEMENT    19
  32. #define REAL8    1
  33. #define REAL4   2
  34. #define INT4    3
  35. #define INT2    4
  36. #define BYTE    5
  37.  
  38. #define CP (**c)
  39.  
  40. void VAR_FORM_init ( c )
  41.  
  42.     struct var_form_struct    **c;
  43.  
  44. {
  45.  
  46.     long int    i;
  47.     /*long int    *ptr;*/
  48.     long int    element_num;
  49.  
  50.     *c = (struct var_form_struct *)
  51.         malloc(sizeof(struct var_form_struct));        /* V1.1 */
  52.  
  53.     set_pointer ((long *) &CP.window, (long) &var_form_inter);
  54.  
  55.     WFL_create_window ((struct window_struct *) CP.window);
  56.  
  57.     CP.num_elements = VAR_FORM_MAX_ELEMENTS;
  58.  
  59.     for (i = 0 ; i < CP.num_elements ; i++)
  60.          {
  61.         set_pointer ((long *) &(CP.elements)[i], (long) &var_form[i]);
  62.          }
  63. /* Initialize popup form and and connect to main form */
  64.  
  65.  
  66.     element_num = VAR_DATATYPE_ELEMENT;
  67.     DATATYPE_init ((long int *)CP.window, (long int *)CP.elements,
  68.             element_num);
  69.  
  70. }
  71.  
  72. void VAR_FORM_load_form(var_ptr)
  73.  
  74.     struct        var_form_struct        *var_ptr;
  75. {
  76.  
  77.     WFL_begin_screen_update ();
  78.     WFL_draw_window ((struct window_struct *) (*var_ptr).window);
  79.     WFL_load_form ((struct form_element_struct **) (*var_ptr).elements,
  80.               (*var_ptr).num_elements,
  81.                (struct window_struct *)    (*var_ptr).window);
  82.     WFL_end_screen_update ();
  83. }
  84.  
  85. void VAR_FORM_display_element( data, data_type, element_num, var_ptr)
  86.  
  87. /* <dan>  add later ??     , video_type)
  88. */
  89.  
  90.     long int    *data;
  91.     int        data_type;
  92.     int        element_num;
  93.     struct        var_form_struct        *var_ptr;
  94.  
  95. {
  96.     int            video_type = NORMAL;
  97.     WFL_display_form_data((struct window_struct *)(*var_ptr).window,
  98.             (struct form_element_struct **)(*var_ptr).elements,
  99.             (int *) data, data_type, element_num, video_type);
  100. }
  101. void VAR_FORM_read_element( data, data_type, element_num, var_ptr,
  102.             rcode)
  103.  
  104.     long int    *data;
  105.     int        data_type;
  106.     int        element_num;
  107.     struct        var_form_struct        *var_ptr;
  108.     int        *rcode;
  109.  
  110. {
  111.     WFL_read_element((struct window_struct *)(*var_ptr).window,
  112.     (struct form_element_struct **) (*var_ptr).elements,
  113.             (int *) data, data_type, element_num, rcode);
  114. }
  115. void VAR_FORM_get_nbytes( data, var_ptr,  element_num, num_bytes)
  116.  
  117.     char        data[];
  118.     struct        var_form_struct        *var_ptr;
  119.     int        element_num;
  120.     int        *num_bytes;
  121.  
  122. {
  123.     long int    type;
  124.     /*int        rcode;*/
  125.     DATATYPE_num_bytes (data, (long *)(*var_ptr).elements,
  126.             element_num, &type);
  127.     switch (type)
  128.         {
  129.         case REAL8:
  130.              *num_bytes = 8;
  131.               break;
  132.         case REAL4:
  133.         case INT4:
  134.              *num_bytes = 4;
  135.               break;
  136.         case INT2:
  137.              *num_bytes = 2;
  138.               break;
  139.         case BYTE:
  140.              *num_bytes = 1;
  141.               break;
  142.         default:
  143.              *num_bytes = 0;
  144.               break;
  145.         }
  146. }
  147.  
  148.  
  149.  
  150. void VAR_FORM_erase_form(var_ptr)
  151.  
  152.     struct        var_form_struct        *var_ptr;
  153. {
  154.  
  155.     WFL_erase_window ((struct window_struct *) (*var_ptr).window );
  156. }
  157.  
  158.